(function () {
    "use strict";

    angular.module('core').factory('empresaService', factory);
    factory.$inject = ['$http', '$q'];

    function factory($http, $q) {

        return {
            get: function (id) {
                var deferred = $q.defer();
                $http.post('/empresa/get', id)
                    .success(function (data) { deferred.resolve(data); })
                    .error(function (data, status, headers, config) { deferred.reject(data); });
                return deferred.promise;
            },
            getAllParametrosFilial: function (id) {
                var deferred = $q.defer();
                $http.post('/empresa/GetAllParametrosFilial', id)
                    .success(function (data) { deferred.resolve(data); })
                    .error(function (data, status, headers, config) { deferred.reject(data); });
                return deferred.promise;
            },
            saveParametrosFilial: function (args) {
                var deferred = $q.defer();
                $http.post('/empresa/SaveParametrosFilial', args)
                    .success(function (data) { deferred.resolve(data); })
                    .error(function (data, status, headers, config) { deferred.reject(data); });
                return deferred.promise;
            },
            getAll: function (args) {
                var deferred = $q.defer();
                $http.post('/empresa/getall', args)
                    .success(function (data) { deferred.resolve(data); })
                    .error(function (data, status, headers, config) { deferred.reject(data); });
                return deferred.promise;
            },
            count: function (args) {
                var deferred = $q.defer();
                $http.post('/empresa/count', args)
                    .success(function (data) { deferred.resolve(data); })
                    .error(function (data, status, headers, config) { deferred.reject(data); });
                return deferred.promise;
            },
            getAllFilha: function (args) {
                var deferred = $q.defer();
                $http.post('/empresa/getallfilha', args)
                    .success(function (data) { deferred.resolve(data); })
                    .error(function (data, status, headers, config) { deferred.reject(data); });
                return deferred.promise;
            },
            countFilha: function (args) {
                var deferred = $q.defer();
                $http.post('/empresa/countfilha', args)
                    .success(function (data) { deferred.resolve(data); })
                    .error(function (data, status, headers, config) { deferred.reject(data); });
                return deferred.promise;
            },

            getAllFilial: function(args) {
                var deferred = $q.defer();
                $http.post('/empresa/getallfilial', args)
                    .success(function (data) { deferred.resolve(data); })
                    .error(function (data, status, header, config) { deferred.reject(data); });
                return deferred.promise;
            },

            prepareNew: function () {
                var deferred = $q.defer();
                $http.post('/empresa/prepareNew')
                    .success(function (data) { deferred.resolve(data); })
                    .error(function (data, status, headers, config) { deferred.reject(data); });
                return deferred.promise;
            },
            prepareNewCliente: function () {
                var deferred = $q.defer();
                $http.post('/empresa/prepareNewCliente')
                    .success(function (data) { deferred.resolve(data); })
                    .error(function (data, status, headers, config) { deferred.reject(data); });
                return deferred.promise;
            },
            prepareNewFornecedor: function () {
                var deferred = $q.defer();
                $http.post('/empresa/prepareNewFornecedor')
                    .success(function (data) { deferred.resolve(data); })
                    .error(function (data, status, headers, config) { deferred.reject(data); });
                return deferred.promise;
            },
            prepareNewRepresentante: function () {
                var deferred = $q.defer();
                $http.post('/empresa/prepareNewVendedor')
                    .success(function (data) { deferred.resolve(data); })
                    .error(function (data, status, headers, config) { deferred.reject(data); });
                return deferred.promise;
            },
            prepareNewTransportadora: function () {
                var deferred = $q.defer();
                $http.post('/empresa/prepareNewTransportadora')
                    .success(function (data) { deferred.resolve(data); })
                    .error(function (data, status, headers, config) { deferred.reject(data); });
                return deferred.promise;
            },
            prepareNewFilial: function () {
                var deferred = $q.defer();
                $http.post('/empresa/prepareNewFilial')
                    .success(function (data) { deferred.resolve(data); })
                    .error(function (data, status, headers, config) { deferred.reject(data); });
                return deferred.promise;
            },
            prepareNewEndereco: function (item) {
                var deferred = $q.defer();
                $http.post('/empresa/prepareNewEndereco', item)
                    .success(function (data) { deferred.resolve(data); })
                    .error(function (data, status, headers, config) { deferred.reject(data); });
                return deferred.promise;
            },

            prepareNewFilialTerminal: function (item) {
                var deferred = $q.defer();
                $http.post('/empresa/prepareNewFilialTerminal', item)
                    .success(function (data) { deferred.resolve(data); })
                    .error(function (data, status, headers, config) { deferred.reject(data); });
                return deferred.promise;
            },
            prepareNewClienteComissaoEspecial: function (item) {
                var deferred = $q.defer();
                $http.post('/empresa/prepareNewClienteComissaoEspecial', item)
                    .success(function (data) { deferred.resolve(data); })
                    .error(function (data, status, headers, config) { deferred.reject(data); });
                return deferred.promise;
            },
            prepareNewRepresentanteComissaoEspecial: function (item) {
                var deferred = $q.defer();
                $http.post('/empresa/prepareNewRepresentanteComissaoEspecial', item)
                    .success(function (data) { deferred.resolve(data); })
                    .error(function (data, status, headers, config) { deferred.reject(data); });
                return deferred.promise;
            },

            prepare: function (item) {
                var deferred = $q.defer();
                $http.post('/empresa/prepare', item)
                    .success(function (data) { deferred.resolve(data); })
                    .error(function (data, status, headers, config) { deferred.reject(data); });
                return deferred.promise;
            },
            prepareEndereco: function (item) {
                var deferred = $q.defer();
                $http.post('/empresa/prepareEndereco', item)
                    .success(function (data) { deferred.resolve(data); })
                    .error(function (data, status, headers, config) { deferred.reject(data); });
                return deferred.promise;
            },

            save: function (item) {
                var deferred = $q.defer();
                $http.post('/empresa/save', item)
                    .success(function (data) { deferred.resolve(data); })
                    .error(function (data, status, headers, config) { deferred.reject(data); });
                return deferred.promise;
            },
            delete: function (id) {
                var args = { id: id };
                var deferred = $q.defer();
                $http.post('/empresa/delete', args)
                    .success(function (data) { deferred.resolve(data); })
                    .error(function (data, status, headers, config) { deferred.reject(data); });
                return deferred.promise;
            },
        };
    }

})();


